<?php

/**
 * This is the model class for table "tbl_equipo".
 *
 * The followings are the available columns in table 'tbl_equipo':
 * @property integer $id
 * @property integer $tipo_id
 * @property integer $modelo_id
 * @property integer $marca_id
 * @property string $serial_number
 * @property string $numero_parte
 * @property string $notas
 * @property integer $estado_id
 * @property integer $ubicacion_id
 * @property integer $proyecto_id
 *
 * The followings are the available model relations:
 * @property EstadoEquipo $estado
 * @property Modelo $modelo
 * @property Modelo $tipo
 * @property Modelo $marca
 * @property Proyecto $proyecto
 * @property Ubicacion $ubicacion
 */
class Equipo extends CActiveRecord
{
	/**
	 * Returns the static model of the specified AR class.
	 * @param string $className active record class name.
	 * @return Equipo the static model class
	 */
	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}

	/**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return 'tbl_equipo';
	}

	/**
	 * @return array validation rules for model attributes.
	 */
	public function rules()
	{
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		return array(
			array('tipo_id, modelo_id, marca_id, estado_id, ubicacion_id, proyecto_id', 'required'),
			array('tipo_id, modelo_id, marca_id, estado_id, ubicacion_id, proyecto_id', 'numerical', 'integerOnly'=>true),
			array('serial_number, numero_parte, notas', 'safe'),
			// The following rule is used by search().
			// Please remove those attributes that should not be searched.
			array('id, tipo_id, modelo_id, marca_id, serial_number, numero_parte, notas, estado_id, ubicacion_id, proyecto_id', 'safe', 'on'=>'search'),
		);
	}

	/**
	 * @return array relational rules.
	 */
	public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
			'estado' => array(self::BELONGS_TO, 'EstadoEquipo', 'estado_id'),
			'modelo' => array(self::BELONGS_TO, 'Modelo', 'modelo_id'),
			'tipo' => array(self::BELONGS_TO, 'Modelo', 'tipo_id'),
			'marca' => array(self::BELONGS_TO, 'Modelo', 'marca_id'),
			'proyecto' => array(self::BELONGS_TO, 'Proyecto', 'proyecto_id'),
			'ubicacion' => array(self::BELONGS_TO, 'Ubicacion', 'ubicacion_id'),
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'id' => 'ID',
			'tipo_id' => 'Tipo',
			'modelo_id' => 'Modelo',
			'marca_id' => 'Marca',
			'serial_number' => 'Serial Number',
			'numero_parte' => 'Numero Parte',
			'notas' => 'Notas',
			'estado_id' => 'Estado',
			'ubicacion_id' => 'Ubicacion',
			'proyecto_id' => 'Proyecto',
		);
	}

	/**
	 * Retrieves a list of models based on the current search/filter conditions.
	 * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
	 */
	public function search()
	{
		// Warning: Please modify the following code to remove attributes that
		// should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('id',$this->id);
		$criteria->compare('tipo_id',$this->tipo_id);
		$criteria->compare('modelo_id',$this->modelo_id);
		$criteria->compare('marca_id',$this->marca_id);
		$criteria->compare('serial_number',$this->serial_number,true);
		$criteria->compare('numero_parte',$this->numero_parte,true);
		$criteria->compare('notas',$this->notas,true);
		$criteria->compare('estado_id',$this->estado_id);
		$criteria->compare('ubicacion_id',$this->ubicacion_id);
		$criteria->compare('proyecto_id',$this->proyecto_id);

		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
		));
	}
}